package cn.px.dao.vo.sb;

import cn.px.common.bean.BaseVO;
import cn.px.dao.entity.upms.SysFile;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.persistence.Transient;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class SbInfoVO extends BaseVO implements Serializable {
    private Integer checkNum;
    /**
     * 自定义参数列表:[{name:name1, content:content1},{name:name2, content:content2}]
     */
    private String paramList;
    /**
     * 验收单id
     */
    private String checkId;
    /**
     * 维修单状态
     */
    @Transient
    private Integer repairStatus;
    /**
     * 报修时间
     */
    @Transient
    private LocalDateTime repairApplyTime;
    /**
     * 保养数目
     */
    private Integer standardNum;
    /**
     * 是否子设备：0 父设备，1 子设备
     */
    private Integer isChild;
    /**
     * 是否在大屏显示设备：0 不显示，1 显示
     */
    private Integer isShow;
    /**
     * 是否固定资产：0 否1 是
     */
    private Integer isFinancing;
    /**
    * 卡片编号
     */
    private String cardNo;
    /**
     * 主键
     */
    private String id;
    /**
     * 设备编号
     */
    private String no;
    /**
     * 财务编码
     */
    private String financingNo;
    /**
     * 财务编码/固定资产编号
     */
    private String financingNoTwo;
    /**
     * 财务编码/固定资产编号
     */
    private String financingNoThird;
    /**
     * 财务编码/固定资产编号
     */
    private String financingNoFour;
    /**
     * 财务编码/固定资产编号
     */
    private String financingNoFive;
    /**
     * 设备型号
     */
    private String modelId;
    /**
     * 设备名称
     */
    private String name;
    private String model;
    private String nameModel;

    private String unitName;
    /**
     * 设备类别
     */
    private String typeId;
    /**
     * 设备等级
     */
    private Integer level;
    /**
     * 净残值率
     */
    private BigDecimal rate;
    /**
     * 折旧总计月份
     */
    private BigDecimal month;
    /**
     * 已计提月份
     */
    private BigDecimal usedMonth;
    /**
     * 设备原值
     */
    private Double initialValue;
    /**
     * 当前价值
     */
    private Double currentValue;
    /**
     * 已折旧价值
     */
    private Double cutValue;
    /**
     * 生产商
     */
    private String producerId;
    /**
     * 设备来源方式
     */
    private Integer sourceType;
    /**
     * 来源设备id
     */
    private String sourceSbId;
    /**
     * 上层设备id
     */
    private String parentId;
    /**
     * 上层设备id
     */
    @Transient
    private String parentSbName;
    /**
     * 计量单位
     */
    private String unit;
    /**
     * 所属车间
     */
    private String positionId;
    /**
     * 规格型号
     */
    private String guigeId;
    /**
     * 使用区域
     */
    private String useArea;
    /**
     * 使用公司
     */
    private String useCompany;
    /**
     * 使用项目部
     */
    private String useProject;
    /**
     * 使用部门
     */
    private String useDept;
    /**
     * 使用施工组
     */
    private String useGroup;
    /**
     * 使用人
     */
    private String useUser;
    /**
     * 保管部门
     */
    private String saveDept;
    /**
     * 保管人
     */
    private String saveUser;
    /**
     * 维修人员
     */
    private String repairUser;
    /**
     * 使用集团/区域
     */
    private String useAreaName;
    /**
     * 使用公司
     */
    private String useCompanyName;
    /**
     * 使用项目部
     */
    private String useProjectName;
    /**
     * 使用部门
     */
    private String useDeptName;
    /**
     * 使用施工组
     */
    private String useGroupName;
    /**
     * 使用人
     */
    private String useUserName;
    /**
     * 保管部门
     */
    private String saveDeptName;
    /**
     * 保管人
     */
    private String saveUserName;
    /**
     * 维修人
     */
    private String repairUserName;
    /**
     * 第二维修人
     */
    private String repairUserNameSecond;
    /**
     * 购置日期
     */
    private LocalDate buyDate;
    /**
     * 投用日期
     */
    private LocalDate startDate;
    /**
     * 下次检定日期
     */
    private LocalDate nextCheckDate;
    /**
     * 保修截至日期
     */
    private LocalDate guaranteeDate;
    /**
     * 预计工作年限
     */
    private Double workYear;
    /**
     * 预计报废日期
     */
    private LocalDate retirementDate;
    /**
     * 折旧方式
     */
    private Integer depreciationType;
    /**
     * 维保手册
     */
    private String wbFile;
    /**
     * 使用手册
     */
    private String useFile;
    /**
     * 验收文件
     */
    private String checkFile;
    /**
     * 设备图片
     */
    private String sbImage;
    /**
     * 自编号/设备（旧号）
     */
    private String zbh;
    /**
     * 二维码
     */
    private String qrCode;
    /**
     * 状态
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;
    /**
     * 创建人
     */
    private String createdUserId;
    /**
     * 修改人
     */
    private String updateUserId;
    /**
     * 创建日期
     */
    private LocalDateTime createdTime;
    /**
     * 更新日期
     */
    private LocalDateTime updateTime;
    /**
     * 创建人姓名
     */
    private String createdUserName;
    /**
     * 修改人姓名
     */
    private String updateUserName;

    /**
     *测量设备相关参数
     */
    private String zzh;//制造号（车架号）/系列号(出厂编号)
    private String fdjxh;//发动机型号/准确度等级
    private LocalDate checkDate;//检定日期（新增字段）
    private Integer checkPeriod;//检定周期（新增字段），以月为单位
    private String dph;//检定单位
    private String zaiz;//检定人
    private Integer rlType;//检定结论：合格不合格
    private Integer color;//是否周检查
    private String sbdh;//检定证书编号
    private Integer seatNumber;//预警天数，默认45天

   // private Integer financingFlag;//是否固定资产/这个通过financingNo是否为空判断，不需要单独字段,暂时不新增

    /**
     * 特种设备相关参数
     */
    private String registerNo;//注册代码(新增字段）
    private String characterType;//介质属性(新增字段）
    private String usedNo;//使用登记证编号(新增字段）
    private String supplier;//维护供应商(新增字段）
    private String repairUserSecond;//第二维修人员(新增字段）
    private String batchNo;//设备批号(新增字段）
    private LocalDate registerDate;// 登记日期(新增字段）

    /**
     * 上层类型名称
     */
    private String parentName;
    /**
     * 来源设备名称
     */
    private String sourceSbName;
    /**
     * 设备类型名称
     */
    private String typeName;
    /**
     * 供应商名称
     */
    private String producerName;
    /**
     * 规格名称
     */
    private String guigeName;

    /**
     * 所属车间
     */
    private String positionName;

    /**
     * 维保手册
     */
    private SbModelVO modelVO;

    /**
     * 维保手册
     */
    private List<SysFile> repairFileList;

    /**
     * 维保手册
     */
    private List<SysFile> useFileList;

    /**
     * 维保手册
     */
    private List<SysFile> recheckFileList;

    /**
     * 维保手册
     */
    private List<SysFile> sbFileList;
    private String fdjh;//发动机号
    private String cph;//车牌号
    private String zz;//自重
    private LocalDate lastRepaireTime;//最近维修时间
    private Integer repaireTimes;//维修次数

    private LocalDate lastBaoyangTime;//最近保养时间
    private double lastBaoyangMiles;//最近保养里程
    private double lastBaoyangHours;//最近保养台时
    private Integer baoyangTimes;//保养次数

    private String zjm;//助记码
    private LocalDate spDate;//上牌日期
    private String jbdh;//交保单号
    private LocalDate jbdDate;//交保到期日
    private LocalDate sbdDate;//商报到期日
    private String bxgs;//保险公司
    private LocalDate sbDate;//首保日期
    private BigDecimal totalMiles;//总行驶里程
    private BigDecimal totalHours;//总行驶小时
    private Integer useType;//自定义类型

    private List<SbInfoVO> children;

    /**
     * 申请时间
     */
    private LocalDateTime applyTime;
    /**
     * 审核时间
     */
    private LocalDateTime auditTime;
    /**
     * 提交审核时间
     */
    private LocalDateTime submitTime;
    /**
     * 关闭时间
     */
    private LocalDateTime closeTime;
    /**
     * 关闭描述
     */
    private String closeDesc;
    /**
     * 工作流实例ID
     */
    private String processInstanceId;

    private Integer auditNode;

    /**
     * 拒绝原因
     */
    private String refuseReason;
    /**
     * 当前审批用户
     */
    @Transient
    private String currentAuditUserName;
    /**
     * 报废创建人
     */
    private String scrapUserId;
    /**
     * 报废创建人
     */
    private String scrapUserName;

    /**
     * 申请意见
     */
    private String applyComment;
}
